setlocal enabledelayedexpansion

for /f "tokens=1-3 delims=:" %%a in ('echo %time%') do (
    set "a=%%a"
    set "b=%%b"
    set "c=%%c"
)

:: 使用 if 语句判断秒部分是否为个位数，如果是则去掉首位的 0
if %c:~0,1% == "0" (
    set /a "c=%c:~1,1%"
) else (
    set /a "c=%c:~0,2%"
)

:: 将当前时间转换为秒数
set /a "current_sec = 3600 * %a% + 60 * %b% + %c%"
echo %current_sec%

:: 计算距离 18 点的秒数
set /a "sec_until_18 = 18 * 60 * 60 - %current_sec"
echo %sec_until_18%

:: 如果当前小于 1 分钟则续 30 min
if %sec_until_18% LEQ 60 (
    set /a "sec_until_18 = 1800"
)
echo %sec_until_18%

shutdown -a
shutdown -s -t %sec_until_18%
